package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * java.util.List
 * List接口继承自Collection
 * List代表的是可以存放重复元素且有序的集合
 *
 * 这个接口内，常用的实现类：
 * java.util.ArrayList:内部使用数组实现，查询性能更好
 * java.util.LinkedList:内部使用链表实现，首位增删元素性能更好
 *
 * List集合提供了一套"独有"的方法，特点：可以通过下标进行操作元素
 */

public class ListDemo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //List<String> list = new LinkedList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);

        /**
         * E get(int index)
           获取集合E中指定下标处的元素
         */
        //获取集合第三个元素
        //用：list.get();//数组的话相当于array[2];
        String e = list.get(2);
        System.out.println(e);
        System.out.println(list.get(3));
        //普通for循环也可以遍历List集合，也可以
        for(int i=0;i<list.size();i++){
            e=list.get(2);
            System.out.println(e);
        }

        /**
           E set(int index,E e)
           将给定元素e设置到指定位置index处，有返回值！
           返回值为该位置原有元素。实质上叫替换
         */
        //用list.set()
        list.set(2,"six");
        System.out.println(list);//one,two,eight,four,five
        String old = list.set(2,"six"); //如果要这个被替换的原值，我们就用String old = 来接收
        System.out.println("被替换的元素为："+old); //two

        //基于get和set操作，将集合元素反转
        for(int i=0;i<(list.size()-1-i)/2;i++){
            String s = list.get(list.size()-1-i);
            s = list.set(i,s);
            list.set((list.size()-1-i),s);
        }
        System.out.println(list);

        /**
         * Collections.xxxxxx   是Collections类的方法
         * 集合反转：
           Collections.reverse();
         */
        Collections.reverse(list);
    }
}
